import {fileURLToPath, URL} from 'node:url'

import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
//自动引入naive-ui组件
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import {NaiveUiResolver} from 'unplugin-vue-components/resolvers'
// Gzip
import viteCompression from 'vite-plugin-compression';
// https://vitejs.dev/config/
export default defineConfig({
    build: {
        // rollupOptions: { // 配置rollup的一些构建策略
        //   output: { // 控制输出
        //     // 在rollup里面, hash代表将你的文件名和文件内容进行组合计算得来的结果
        //     assetFileNames: "[hash].[name].[ext]"
        //   }
        // },
        // assetsInlineLimit: 4096000, // 4000kb  超过会以base64字符串显示
        minify: 'terser',
        terserOptions: {
            compress: {
                drop_console: true, // 移除console.log
                drop_debugger: true  // 移除debugger
            }
        },
        outDir: "dist", // 输出名称
        // assetsDir: "static/assets", // 静态资源目录
        assetsDir: "assets", // 静态资源目录
        // rollupOptions: {
        //     output: {
        //         manualChunks: {
        //             "login":[
        //               '@/views/LoginView.vue'
        //             ],
        //             "userinfo":[
        //                 "@/views/UserInfo.vue"
        //             ],
        //         },
        //     },
        // },

    },
    plugins: [
        vue(),
        viteCompression({
            verbose: true, // 默认即可
            disable: false, //开启压缩(不禁用)，默认即可
            deleteOriginFile: false, //删除源文件
            threshold: 500, //压缩前最小文件大小
            algorithm: 'gzip', //压缩算法
            ext: '.gz', //文件类型
        }),
        AutoImport({
            imports: [
                'vue',
                {
                    'naive-ui': [
                        'useDialog',
                        'useMessage',
                        'useNotification',
                        'useLoadingBar'
                    ]
                }
            ]
        }),
        Components({
            dirs: ['src/components/AutoImport'],
            resolvers: [NaiveUiResolver()]
        })
    ],
    resolve: {
        alias: {
            '@': fileURLToPath(new URL('./src', import.meta.url))
        }
    },
    server: {
        proxy: {
            '/api': { // 配置需要代理的路径 --> 这里的意思是代理http://localhost:80/api/后的所有路由
                target: 'http://175.178.194.85:8023', // 目标地址 --> 服务器地址
                // target: 'http://127.0.0.1:8023', // 目标地址 --> 本地地址
                changeOrigin: true, // 允许跨域
                ws: true,  // 允许websocket代理
                // 重写路径 --> 作用与vue配置pathRewrite作用相同
                rewrite: (path) => path.replace(/^\/api/, "/api")
            },
            "/static": { // 配置需要代理的路径 --> 这里的意思是代理http://localhost:80/api/后的所有路由
                target: 'http://175.178.194.85:8021', // 目标地址 --> 服务器地址
                changeOrigin: true, // 允许跨域
                ws: true,  // 允许websocket代理
                // 重写路径 --> 作用与vue配置pathRewrite作用相同
                rewrite: (path) => path.replace(/^\/static/, "/static")
            },
        },
    },
})
